import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

/***
 * 3.2 颜色兼容性规则（ColorCompatibilityRule）
 * 确保零件颜色兼容（例如，红色轮毂不能装在绿色车身上）。
 * 
 * 说明：
 * incompatibleColors 存储不兼容的颜色对（如红色和绿色）。
 * 检查两个零件的颜色属性是否在不兼容列表中。
 */

public class ColorCompatibilityRule implements Rule {
    private final Set<List<String>> incompatibleColors; // 不兼容的颜色组合

    public ColorCompatibilityRule() {
        this.incompatibleColors = new HashSet<>();
    }

    // 添加不兼容的颜色组合
    public void addIncompatibleColors(String color1, String color2) {
        incompatibleColors.add(Arrays.asList(color1, color2));
        incompatibleColors.add(Arrays.asList(color2, color1)); // 双向不兼容
    }

    @Override
    public boolean isValid(Part part1, Part part2) {
        String color1 = part1.getAttribute("color");
        String color2 = part2.getAttribute("color");
        if (color1 == null || color2 == null) {
            return true; // 如果没有颜色属性，跳过检查
        }
        return !incompatibleColors.contains(Arrays.asList(color1, color2));
    }

    @Override
    public String getDescription() {
        return "颜色兼容性规则[Color Compatibility Rule]：确保各部件颜色相容";
    }
}